package com.example.sls.utils;

import java.util.Arrays;

/**
 * 编者：蓝江富
 * 时间：2024/6/17 8:53
 * <br> 自定义输出语句，会输出当前类和字符串
 * <br> 快捷键设置：在设置中搜索sout，在java中添加自己的快捷输入lul，启用它，类似于tab键sout会变成System.out.println();一样，tab键lul会生成你想要的
 */
public class LogUtil {

  // 禁止new建立对象
  private LogUtil(){};

  private static <T> void function(T[] any, int status) {
    // 获取当前类路径
    String className = String.valueOf(Thread.currentThread().getStackTrace()[3]);
    String result = String.join("", Arrays.stream(any).map(Object::toString).toArray(String[]::new));
    System.out.println("\n\u001B[3" + status + "m【" + className + "】>>>");
    System.out.println(result);
    System.out.println("<<<\033[30m");
  }

  @SafeVarargs
  public static <T> void log(T... any) {
    function(any, 4);
  }

  @SafeVarargs
  public static <T> void err(T... any) {
    function(any, 1);
  }

  @SafeVarargs
  public static <T> void war(T... any) {
    function(any, 3);
  }

  @SafeVarargs
  public static <T> void ok(T... any) {
    function(any, 2);
  }

}
